<?php

header('Content-Type: text/html; charset=ISO-8859-1');

define('TOKEN', 'FCD2DECB6DEC4A6ABD30F4CFF0240CC0');

include($configurator["classes"] . "/pedido.classes.php");
include($configurator["dao"] . "/pedidoDao.php");
include($configurator["classes"] . "/item_pedido.classes.php");
include($configurator["dao"] . "/itemPedidoDao.php");

$_pedido = new PedidoDao();
$_itemPedido = new ItemPedidoDao();


class PagSeguroNpi {

    private $timeout = 5; // Timeout em segundos

    public function notificationPost() {
        $postdata = 'Comando=validar&Token=' . TOKEN;
        foreach ($_POST as $key => $value) {
            $valued = $this->clearStr($value);
            $postdata .= "&$key=$valued";
        }
        return $this->verify($postdata);
    }

    private function clearStr($str) {
        if (!get_magic_quotes_gpc()) {
            $str = addslashes($str);
        }
        return $str;
    }

    private function verify($data) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_TIMEOUT, $this->timeout);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        $result = trim(curl_exec($curl));
        curl_close($curl);
        return $result;
    }

}

if (count($_POST) > 0) {
    // POST recebido, indica que é a requisição do NPI.
    $npi = new PagSeguroNpi();
    $result = $npi->notificationPost();

    $transacaoID = isset($_POST['TransacaoID']) ? $_POST['TransacaoID'] : '';

    //O post foi validado pelo PagSeguro. 
    if ($result == "VERIFICADO") {
        switch ($_POST['TipoPagamento']) {
            case 'Pagamento' : $formaPagamento = 7;
                break;
            case 'Cartão de Crédito' : $formaPagamento = 2;
                break;
            case 'Boleto' : $formaPagamento = 6;
                break;
            case 'Pagamento Online' : $formaPagamento = 5;
                break;
            default : $formaPagamento = 0;
                break;
        }

        switch ($_POST['StatusTransacao']) {
            case 'Completo' : $status = 1;
                break;
            case 'Aguardando Pagto' : $status = 2;
                break;
            case 'Aprovado' : $status = 3;
                break;
            case 'Em Análise' : $status = 4;
                break;
            case 'Cancelado' : $status = 5;
                break;
            default : $status = 0;
                break;
        }

        $_pedido->setCliente($_POST['Referencia']);
        $_pedido->setFormaPgtoCodigo($formaPagamento);
        $_pedido->setStatusCodigo($status);
        $_pedido->setTransacaoId($_POST['TransacaoID']);
        
        $pedidoID = $_pedido->adicionarPedido();
        
        if ($pedidoID) {
            for ($i = 1; $i < $_POST['NumItens']+1; $i++) {
                //-------------------------------
                $idProd = 'ProdID_'.$i;
                $itp_produto = $_POST[$idProd];
                //-------------------------------
                $Quant = 'ProdQuantidade_'.$i;
                $itp_quant =$_POST[$Quant];
                //-------------------------------
                
                $_itemPedido->setIPedido($pedidoID);
                $_itemPedido->setProduto($itp_produto);
                $_itemPedido->setQuant($itp_quant);
                
                $_itemPedido->adicionarItemPedido();
            }
        }
      //  $_cliente->gravarTeste($_POST['Referencia']);
    } else if ($result == "FALSO") {
        //O post não foi validado pelo PagSeguro.
    } else {
        //Erro na integração com o PagSeguro.
        $result = "deu aguia";
    }

    $_SESSION['pagseguro'] = $result;
} else {
    // POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
    // No término do checkout o usuário é redirecionado para este bloco.
    $smarty->display("cliente_carrinho.tpl");
}
?>